Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин
Шрифт:
Интервал:
Закладка:
Или же можно создать свой компонент ListCell и вернуть его в переопределенном методе call интерфейса, который служит аргументом метода setCellFactory.
Разделитель Separator
Компонент Separator представляет горизонтальный или вертикальный разделитель, используемый для визуального отделения одной группы компонентов интерфейса от другой группы компонентов.


Свойство orientation компонента определяет – будет ли разделитель горизонтальным или вертикальным.
Так как сам по себе разделитель Separator представлен линией, а разделитель имеет определенную ширину и высоту, то свойства halignment и valignment определяют выравнивание линии для вертикального и горизонтального разделителя соответственно.
Разделитель создается с помощью конструктора, в котором сразу можно указать его ориентацию.
Ползунок Slider
Компонент Slider представляет горизонтальный или вертикальный ползунок, используемый для выбора пользователем значения из определенного диапазона.


С помощью свойства orientation компонента устанавливается – будет ли ползунок вертикальным, или горизонтальным.
Свойства компонента max, min и value определяют диапазон и текущее значение ползунка.
Свойство blockIncrement определяет перемещение ползунка при управлении клавишами клавиатуры.
Свойство majorTickUnit определяет расстояние между главными метками ползунка.
С помощью свойств minorTickCount, showTickLabels, showTickMarks и snapToTicks устанавливается отображение количества вспомогательных меток, отображение подписей к главным меткам и отображение главных меток, а также соответствие значения ползунка метке.
К свойству value можно присоединить слушателя и обрабатывать перемещение ползунка.
Индикаторы ProgressBar и ProgressIndicator
Компонент ProgressIndicator представляет собой круглый индикатор выполнения задачи.


Свойство компонента progress, представляющее процент выполнения задачи, своим значением от 0.0 до 1.0 определяет заполнение и текст индикатора ProgressIndicator.
Свойство компонент indeterminate принимает значение true, если свойство progress установлено со значением -1 – это означает, что индикатор показывает выполнение процесса, не имеющего определенного интервала.
Компонент ProgressBar представляет прямоугольный индикатор выполнения задачи и является расширением компонента ProgressIndicator.
В этом примере мы создаем индикаторы ProgressIndicator и ProgressBar.
И мы создаем JavaFX свойство DoubleProperty, которое связываем со свойствами progress индикаторов.
Изменяя одно это свойство, мы автоматически изменяем свойства progress этих двух индикаторов.
Если мы установим значение этого свойства -1, индикаторы станут показывать неопределенный прогресс.
Окно Tooltip
Компонент Tooltip представляет окно подсказки, появляющееся при наведении курсора мышки на узел графа сцены.


При наведении курсора мышки окно сначала активируется, а затем с некоторой задержкой отображается.
Окно подсказки Tooltip присоединяется к компоненту управления Control с помощью установки его свойства tooltip или к узлу Node с помощью статического метода install класса Tooltip.
Так как класс Tooltip является расширением класса Labeled, вы можете добавить не только текст, но и изображение в окно подсказки.
Редактор HTMLEditor
Компонент HTMLEditor представляет редактор HTML-разметки.


Метод setHtmlText класса HTMLEditor позволяет установить первоначальную HTML-разметку редактора.
На основе первоначальной HTML-разметки, включенных опций редактора и введенного текста редактор HTMLEditor формирует HTML-разметку, получить доступ к которой можно с помощью метода getHtmlText класса HTMLEditor.
В этом примере мы создаем первоначальную разметку с двумя тегами и фоном, которые будут служить контейнером.
Теперь, вводимый в редакторе HTMLEditor контент будет вставляться в этот контейнер.
Вверху окна у нас компонент WebView, который отображает HTML-контент.
А в нижней части окна у нас редактор HTMLEditor, в котором мы можем устанавливать различные опции для формирования HTML разметки.
При нажатии кнопки, компонент WebView отображает созданную HTML разметку, а компонент Label отображает исходный HTML код.
С помощью редактор HTMLEditor можно форматирование текст, настраивать абзацы, устанавливать цвет переднего плана и фона, создавать списки, выравнивать текст, копировать и вставлять текстовые фрагменты.
Панель TitledPane
Компонент TitledPane представляет раскрывающуюся панель с заголовком.


С помощью свойства компонента content устанавливается узел Node, отображаемый в панели TitledPane.
Свойство graphic позволяет установить узел Node, представляющий заголовок панели.
Свойство expanded принимает значение true, если панель раскрыта и отображает свое содержимое.
Если значение свойства collapsible установлено false, тогда панель TitledPane не имеет опции сворачивания.
Установка true значения свойства animated делает сворачивание и разворачивание панели TitledPane плавным.
Панель TitledPane автоматически принимает ширину узла Node заголовка панели или ширину узла Node содержимого панели – что окажется больше.
Высота панели TitledPane автоматически становится равной высоте узла Node содержимого панели.
В этом примере мы создаем панель с помощью конструктора, в котором можно сразу указать заголовок и узел контента.
Затем мы создаем компонент заголовка и добавляем его в панель методом setGraphic.
Далее мы создаем компонент контента и добавляем его в панель методом setContent.
Панель Accordion
Компонент Accordion представляет набор панелей с заголовком TitledPane.


Панель Accordion состоит из набора ObservableList горизонтальных панелей с заголовком, пополнить который можно с помощью метода getPanes.addAll класса Accordion.
Свойство компонента expandedPane определяет первоначально раскрытую панель TitledPane.
В этом примере мы создаем набор панелей TitledPane и добавляем их в Accordion.
Методом setExpandedPane мы устанавливаем первую панель раскрытой.
Панель MenuBar и меню Menu
Компонент MenuBar представляет панель меню.


Компонент MenuBar содержит список ObservableList компонентов меню Menu, который можно пополнить с помощью метода getMenus.addAll класса MenuBar.
Компоненты меню Menu, содержащиеся в панели MenuBar, представлены классом Menu, экземпляр которого может быть создан с помощью конструктора, в котором можно указать текст меню и его значок.
Компоненты меню Menu панели MenuBar также содержат свои наборы ObservableList компонентов MenuItem, которые можно заполнить с помощью метода getItems.addAll класса Menu.
Компоненты MenuItem могут быть созданы с помощью конструктора, в котором можно также указать текст элемента меню и его значок.
Класс MenuItem расширяется классами CheckMenuItem, CustomMenuItem, Menu, и RadioMenuItem.
Поэтому в компонент меню Menu панели MenuBar можно добавлять не только элементы MenuItem, но и переключатели CheckMenuItem и RadioMenuItem, а также разделители SeparatorMenuItem, представленные классом SeparatorMenuItem, расширяющим класс CustomMenuItem, и вложенные меню Menu.
В этом примере мы создаем панель меню, стилизуем ее и устанавливаем размеры.
Затем мы создаем меню File, для которого создаем элемент Print.
Для этого элемента мы определяем горячие клавиши и обработчик выбора, который устанавливаем методом setOnAction.
Далее мы создаем группу радио элементов меню с возможностью выбора только одного элемента из этой группы.

И создаем простой элемент флажка, который отделяем элементом разделителя.
Все эти элементы мы добавляем в меню методом getItems.addAll.
А само меню добавляем в панель меню методом getMenus.addAll.
Меню ContextMenu
Компонент ContextMenu представляет контекстное меню компонентов Control, открывающееся